﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProjectPlotagemGrafo
{
    public class PlotarGrafo
    {

        #region Propriedades

        public List<PessoaAlunoRM> todosAlunosRM;
        private List<int> _coordenadaVertical = new List<int>();
        private List<int> _coordenadaHorizontal = new List<int>();

        public PlotarGrafo(List<PessoaAlunoRM> listatodosAlunosRM)
        {
            this.todosAlunosRM = listatodosAlunosRM;
        }

        #endregion

        #region MétodosDePlotagem

        public List<int> PlotagemDoGrafo()
        {
            GerarCoordenadas();
            int indiceCoordenadas = 0;
            List<int> respostaPlotagem = new List<int>();
            PreencherRespostaPlotagem(respostaPlotagem, indiceCoordenadas);
            return respostaPlotagem;
        }

        public void PreencherRespostaPlotagem(List<int> respostaPlotagem, int indiceCoordenadas)
        {
            respostaPlotagem.Add(_coordenadaVertical[indiceCoordenadas]);
            respostaPlotagem.Add(_coordenadaHorizontal[indiceCoordenadas]);
            _coordenadaVertical.Remove(_coordenadaVertical[indiceCoordenadas]);
            _coordenadaHorizontal.Remove(_coordenadaHorizontal[indiceCoordenadas]);
        }

        public void GerarCoordenadas()
        {
            Random numeroRandomico = new Random();
            int vertical;
            int horizontal;
            int valorParametroRandomico = 1000;
            int valorCoordenada = 50;
            vertical = numeroRandomico.Next(valorParametroRandomico);
            horizontal = numeroRandomico.Next(valorParametroRandomico);
            _coordenadaVertical.Add(vertical);
            _coordenadaHorizontal.Add(horizontal);

            do
            {
                vertical = numeroRandomico.Next(valorParametroRandomico);
                horizontal = numeroRandomico.Next(valorParametroRandomico);
                for (int indiceControlador = 0; indiceControlador < _coordenadaVertical.Count; indiceControlador++)
                    if (vertical > _coordenadaVertical[indiceControlador] - valorCoordenada && vertical < _coordenadaVertical[indiceControlador] + valorCoordenada && horizontal > _coordenadaHorizontal[indiceControlador] - valorCoordenada && horizontal < _coordenadaHorizontal[indiceControlador] + valorCoordenada)
                    {
                        indiceControlador = -1;
                        vertical = numeroRandomico.Next(valorParametroRandomico);
                        horizontal = numeroRandomico.Next(valorParametroRandomico);
                    }
                _coordenadaVertical.Add(vertical);
                _coordenadaHorizontal.Add(horizontal);

            } while (_coordenadaVertical.Count < todosAlunosRM.Count && _coordenadaHorizontal.Count < todosAlunosRM.Count);
        }

        #endregion

    }
}

